﻿Namespace EIBData.DPT
    Public MustInherit Class EIBDataDPT_23_Base
        Inherits EIBDataDPT_Base

        Protected _valueBase As Byte = Nothing


        Sub New(data As Byte())
            If Not CanEncode(data) Then Throw New EIB.Exceptions.EIBDataDecodeException("")

            MyBase._data = data
            _valueBase = data(0)
        End Sub

        Sub New(value As Byte)
            If value > 3 Then Throw New EIB.Exceptions.EIBDataEncodeException("")

            _valueBase = value
            MyBase._data = New Byte() {_valueBase}
        End Sub


        Public Overrides Function CanEncode(data() As Byte) As Boolean
            Return data IsNot Nothing AndAlso data.Length = DPT_OctetLength
        End Function

        Public Overrides Function ToString() As String
            Return _valueBase
        End Function

        Public Overrides Function ToObject() As Object()
            Return New Object() {_valueBase}
        End Function

        Public Overrides ReadOnly Property ObjectType As System.Type()
            Get
                Return New Type() {GetType(Byte)}
            End Get
        End Property

        Public Shared Shadows ReadOnly Property DPT_BaseName As String
            Get
                Return "N2"
            End Get
        End Property

        Public Shared Shadows ReadOnly Property DPT_OctetLength As Byte
            Get
                Return 1
            End Get
        End Property

        Public Shared Shadows ReadOnly Property DPT_Name As String
            Get
                Return "DPT_23"
            End Get
        End Property

        Public Shared Shadows ReadOnly Property DPT_Number As String
            Get
                Return "23.xxx"
            End Get
        End Property

        Public ReadOnly Property Value As Byte
            Get
                Return _valueBase
            End Get
        End Property
    End Class
End Namespace